/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package pe.com.cotelasa.scp.dominio.servicio.impl;

import java.io.Serializable;
import java.util.Collection;
import java.util.Date;
import javax.inject.Inject;
import org.springframework.stereotype.Service;
import pe.com.cotelasa.common.dao.excepcion.DAOException;
import pe.com.cotelasa.scp.dao.IDAOCajaChica;
import pe.com.cotelasa.scp.dao.IDAODocumentoSustentador;
import pe.com.cotelasa.scp.dao.IDAOMovimientoCajaChica;
import pe.com.cotelasa.scp.dominio.common.ESTADO_REGISTRO;
import pe.com.cotelasa.scp.dominio.common.ESTADO_RESULTADO;
import pe.com.cotelasa.scp.dominio.common.ResultadoServicio;
import pe.com.cotelasa.scp.dominio.excepcion.ServiceException;
import pe.com.cotelasa.scp.dominio.service.IServicioDocumentoSustentador;
import pe.com.cotelasa.scp.entidad.DocumentoSustentador;
import pe.com.cotelasa.scp.entidad.MovimientoCajaChica;
import pe.com.cotelasa.scp.entidad.MovimientoCuentaBancaria;

/**
 *
 * @author DESARROLLO01
 */
@Service
public class ServicioDocumentoSustentadorImpl implements IServicioDocumentoSustentador, Serializable {

    private static final long serialVersionUID = -4727188952267726985L;
    @Inject
    private IDAOCajaChica daoCajaChica;
    @Inject
    private IDAOMovimientoCajaChica daoMovimientoCajaChica;
    @Inject
    private IDAODocumentoSustentador daoDocumentoSustentador;

    @Override
    public void registrarDocSustentador(DocumentoSustentador documentoSustentador) throws ServiceException {

        try {
            documentoSustentador.setEstadoRegistro(ESTADO_REGISTRO.ACTIVO.getValor());
            daoDocumentoSustentador.insertar(documentoSustentador);
        } catch (DAOException e) {
            throw new ServiceException(e.getMessage(), e);
        }


    }

    @Override
    public void eliminarDocSustentador(DocumentoSustentador documentoSustentador) throws ServiceException {
        throw new UnsupportedOperationException("Not supported yet.");
    }

    @Override
    public ResultadoServicio actualizarDocSustentador(DocumentoSustentador documentoSustentador) throws ServiceException {

        ResultadoServicio resultadoServicio = new ResultadoServicio(ESTADO_RESULTADO.EXITOSO);
        try {
            daoDocumentoSustentador.actualizar(documentoSustentador);
        } catch (DAOException ex) {
            throw new ServiceException(ex.getMessage(), ex);
        }
        return resultadoServicio;

    }

    @Override
    public Collection<DocumentoSustentador> listarDocSustentadorActivos() throws ServiceException {

        try {

            return daoDocumentoSustentador.listarTodos(DocumentoSustentador.class);

        } catch (DAOException ex) {
            throw new ServiceException(ex.getMessage(), ex);
        }

    }

    @Override
    public Collection<DocumentoSustentador> listarDocSustentadorActivos(MovimientoCajaChica movCajaChica) throws ServiceException {

        try {
            return daoDocumentoSustentador.listarDocSustentadorMovimiento(movCajaChica);
        } catch (DAOException ex) {
            throw new ServiceException(ex.getMessage(), ex);
        }

    }

    @Override
    public Collection<DocumentoSustentador> listarDocSustentadorPorCuenta(MovimientoCuentaBancaria mocCuenta) throws ServiceException {

        try {
            return daoDocumentoSustentador.listarDocSustentadorPorCuenta(mocCuenta);
        } catch (DAOException ex) {
            throw new ServiceException(ex.getMessage(), ex);
        }

    }

    @Override
    public Collection<DocumentoSustentador> listarDocumentoPorFiltro(DocumentoSustentador documentoSustentador, Date fechaInicio, Date fechaFinal) throws ServiceException {
        try {
            return daoDocumentoSustentador.listarDocumentoPorFiltro(documentoSustentador, fechaInicio, fechaFinal);
        } catch (DAOException ex) {
            throw new ServiceException(ex.getMessage(), ex);
        }
    }
}
